home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 July: Mac OS SDK / Dev.CD Jul 00 SDK2.toast / Development Kits / Hardware / Mac OS USB DDK / Mac OS USB DDK 1.4.1 / Examples / USBSampleStorageDriver / UnitTableDriver / UnitTableDriverIcons.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-04-25  |  16.5 KB  |  363 lines  |  [TEXT/CWIE]

  1. /*
  2.     File:        StorageClassUTDriverIcons.c
  3.  
  4.     Contains:    All declarations and types that are associated with the 
  5.                 Driver's Drive and Media Icons.
  6.  
  7.     Version:    1.1
  8.  
  9.     Copyright:    © 1998-1999 by Apple Computer, Inc., all rights reserved.
  10.  
  11. */
  12. #include <DriverServices.h>
  13. #include <Folders.h>
  14. #include <DriverGestalt.h>
  15.  
  16. #include "UnitTableDriverIcons.h"
  17.  
  18. IconFamilyPtr        CartridgeMediaIconFamily;
  19. IconFamilyHandle    FloppyMediaIconFamily;
  20.  
  21. // The IconRef is used for getting the Floppy family of Icons from the system
  22. static     IconRef  theFloppyIconRef;
  23.  
  24. // This is the black and white Apple Floppy icon and mask for use in
  25. // systems where the IconServicesLib isn't present
  26. DiskIcon AppleFloppyMediaIcon =    
  27. {
  28.     0x7FFF, 0xFFF0, 0x8080, 0x0208, 0x8080, 0xE204, 0x8081, 0x1202,
  29.     0x8081, 0x1202, 0x8081, 0x1202, 0x8081, 0x1202, 0x8081, 0x1202,
  30.     0x8080, 0xE202, 0x8080, 0x0202, 0x807F, 0xFC02, 0x8000, 0x0002,
  31.     0x8000, 0x0002, 0x8000, 0x0002, 0x8000, 0x0002, 0x87FF, 0xFFC2,
  32.     0x8800, 0x0022, 0x8800, 0x0022, 0x8800, 0x0022, 0x8800, 0x0022,
  33.     0x8800, 0x0022, 0x8800, 0x0022, 0x8800, 0x0022, 0x8800, 0x0022,
  34.     0x8800, 0x0022, 0x8800, 0x0022, 0x8800, 0x0022, 0x8800, 0x0022,
  35.     0x8800, 0x0022, 0x8800, 0x0022, 0x8800, 0x0022, 0x7FFF, 0xFFFC,
  36.  
  37.     /*************************  MASK  ****************************/
  38.     0x7FFF, 0xFFF0, 0xFFFF, 0xFFF8, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFE,
  39.     0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE,
  40.     0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE,
  41.     0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE,
  42.     0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE,
  43.     0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE,
  44.     0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE,
  45.     0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0x7FFF, 0xFFFC
  46. };
  47.  
  48. // The following structures are all used by the driver in systems
  49. // that support the color icons by use of the IconServicesLib
  50.  
  51. // This is the Large 1 bit Cartridge icon and mask, this is also used in
  52. // systems where the IconServicesLib isn't present
  53. DiskIcon CartridgeIcon =        //cartridge icon
  54. {
  55.     0x0000, 0x0000, 0x3BFF, 0xFFF0, 0x4440, 0x0108, 0x8440, 0x0104,
  56.     0x8441, 0xE104, 0x8441, 0x2104, 0x8441, 0x2104, 0x8441, 0x2104,
  57.     0x8441, 0x2104, 0x8441, 0xE104, 0x8440, 0x0104, 0x8440, 0x0104,
  58.     0x8440, 0x0104, 0x8440, 0x0104, 0x8440, 0x0104, 0x8440, 0x0104,
  59.     0x8440, 0x0104, 0x847F, 0xFF04, 0x8400, 0x0104, 0x8400, 0x0104,
  60.     0x8400, 0x0104, 0x8400, 0x0104, 0x8400, 0x0104, 0x8400, 0x0104,
  61.     0x8400, 0x0104, 0x8400, 0x0104, 0x8400, 0x0106, 0x8400, 0x0107,
  62.     0x8400, 0x0107, 0x8400, 0x0107, 0x8400, 0x0107, 0x7FFF, 0xFFFE,
  63.     
  64.     /*************************  MASK  ****************************/
  65.     0x0000, 0x0000, 0x3BFF, 0xFFF0, 0x7FFF, 0xFFF8, 0xFFFF, 0xFFFC,
  66.     0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC,
  67.     0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC,
  68.     0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC,
  69.     0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC,
  70.     0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC,
  71.     0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFF,
  72.     0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x7FFF, 0xFFFE
  73. };
  74.  
  75. // This is the Large 4 bit Cartridge icon
  76. UInt16 Media_icl4[] = 
  77. {
  78.     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  79.     0x00FF, 0xF0AF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000,
  80.     0x0F00, 0x0DCC, 0xCA00, 0x0000, 0x0000, 0x0CA0, 0x000C, 0xF000,
  81.     0xF00C, 0xCDCC, 0xCD0C, 0x0C0C, 0xCCCC, 0xCCD0, 0xCCCC, 0xDF00,
  82.     0xF0CC, 0xCDCC, 0xCD00, 0xC00E, 0xEEE0, 0xCCD0, 0xCCCC, 0xDF00,
  83.     0xF0CC, 0xCDCC, 0xCD0C, 0x0C0E, 0xDDD0, 0xCCD0, 0xCCCC, 0xDF00,
  84.     0xF0CC, 0xCDCC, 0xCD00, 0xCC0E, 0xDDD0, 0xCCD0, 0xCCCC, 0xDF00,
  85.     0xF0CC, 0xCDCC, 0xCD0C, 0xCC0E, 0xDDD0, 0xCCD0, 0xCCCC, 0xDF00,
  86.     0xF0CC, 0xCDCC, 0xCD0C, 0xCC0E, 0xDDD0, 0xCCD0, 0xCCCC, 0xDF00,
  87.     0xF0CC, 0xCDCC, 0xCD0C, 0xCC0E, 0xDDD0, 0xCCD0, 0xCCCC, 0xDF00,
  88.     0xF0CC, 0xCDCC, 0xCD0C, 0xCC00, 0x0000, 0xCCD0, 0xCCCC, 0xDF00,
  89.     0xF0CC, 0xCDCC, 0xCD0C, 0xCCCC, 0xCCCC, 0xCCD0, 0xCCCC, 0xDF00,
  90.     0xF0CC, 0xCDCC, 0xCD0C, 0xCCCC, 0xCCCC, 0xCCD0, 0xCCCC, 0xDF00,
  91.     0xF0CC, 0xCDCC, 0xCD0C, 0xCCCC, 0xCCCC, 0xCCD0, 0xCCCC, 0xDF00,
  92.     0xF0CC, 0xCDCC, 0xCD0C, 0xCCCC, 0xCCCC, 0xCCD0, 0xCCCC, 0xDF00,
  93.     0xF0CC, 0xCDCC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCD0, 0xCCCC, 0xDF00,
  94.     0xF0CC, 0xCDCC, 0xCDDD, 0xDDDD, 0xDDDD, 0xDDE0, 0xCCCC, 0xDF00,
  95.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  96.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  97.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  98.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  99.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  100.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  101.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  102.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  103.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  104.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDFA0,
  105.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDFAA,
  106.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDFAA,
  107.     0xF00C, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDFAA,
  108.     0xFDDD, 0xDDDD, 0xDDDD, 0xDDDD, 0xDDDD, 0xDDDC, 0xDDDD, 0xDFAA,
  109.     0x0FFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFAA0
  110. };
  111.  
  112. // This is the Large 8 bit Cartridge icon
  113. UInt16 Media_icl8[] =
  114. {
  115.     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  116.     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  117.     0x0000, 0xFFFF, 0xFF00, 0xFDFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  118.     0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000,
  119.     0x00FF, 0x0000, 0x00FA, 0xF6F6, 0xF6FD, 0x0000, 0x0000, 0x0000,
  120.     0x0000, 0x0000, 0x00F6, 0xFD00, 0x00F5, 0xF52B, 0xFF00, 0x0000,
  121.     0xFF00, 0x00F6, 0xF6FA, 0xF8F8, 0xF8F9, 0x00F6, 0x00F6, 0x00F6,
  122.     0xF6F6, 0xF6F6, 0xF6F6, 0xFA00, 0xF62B, 0xF7F8, 0xF9FF, 0x0000,
  123.     0xFF00, 0xF62B, 0x2BFA, 0xF8F8, 0xF8F9, 0x0000, 0xF600, 0x00FB,
  124.     0xFBFB, 0xFB00, 0xF6F6, 0xFA00, 0x2BF7, 0xF7F8, 0xF9FF, 0x0000,
  125.     0xFF00, 0xF6F7, 0x2BFA, 0xF8F8, 0xF8F9, 0x00F6, 0x00F6, 0x00FB,
  126.     0xF9F9, 0xF900, 0xF6F6, 0xFA00, 0x2BF7, 0xF7F8, 0xF9FF, 0x0000,
  127.     0xFF00, 0xF7F7, 0xF7FA, 0xF8F8, 0xF8F9, 0x0000, 0xF6F6, 0x00FB,
  128.     0xF9F9, 0xF900, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  129.     0xFF00, 0x2BF7, 0xF7FA, 0xF8F8, 0xF8F9, 0x00F6, 0xF6F6, 0x00FB,
  130.     0xF9F9, 0xF900, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  131.     0xFF00, 0x2BF7, 0xF7FA, 0xF8F8, 0xF8F9, 0x00F6, 0xF6F6, 0x00FB,
  132.     0xF9F9, 0xF900, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  133.     0xFF00, 0x2BF7, 0xF7FA, 0xF8F8, 0xF8F9, 0x00F6, 0xF6F6, 0x00FB,
  134.     0xF9F9, 0xF900, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  135.     0xFF00, 0x2BF7, 0xF7FA, 0xF8F8, 0xF8F9, 0x00F6, 0xF6F6, 0x0000,
  136.     0x0000, 0x0000, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  137.     0xFF00, 0x2BF7, 0xF7FA, 0xF8F8, 0xF8F9, 0x00F6, 0xF6F6, 0xF6F6,
  138.     0xF6F6, 0xF6F6, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  139.     0xFF00, 0x2BF7, 0xF7FA, 0xF8F8, 0xF8F9, 0x00F6, 0xF6F6, 0xF6F6,
  140.     0xF6F6, 0xF6F6, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  141.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F9, 0x00F6, 0xF6F6, 0xF6F6,
  142.     0xF6F6, 0xF6F6, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  143.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F9, 0x00F6, 0xF6F6, 0xF6F6,
  144.     0xF6F6, 0xF6F6, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  145.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F9, 0xF7F6, 0xF6F6, 0xF6F6,
  146.     0xF6F6, 0xF6F6, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  147.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F9, 0xFAFA, 0xFAFA, 0xFAFA,
  148.     0xFAFA, 0xFAFA, 0xFAFA, 0xFB00, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  149.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  150.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  151.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  152.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  153.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  154.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  155.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  156.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  157.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  158.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  159.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  160.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  161.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  162.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  163.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  164.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  165.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  166.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  167.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  168.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF7F8, 0xF7F8, 0xF9FF, 0xFD00,
  169.     0xFF00, 0xF7F7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  170.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF7F8, 0xF7F8, 0xF9FF, 0xFDFD,
  171.     0xFF00, 0xF7F7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  172.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF7F8, 0xF7F8, 0xF9FF, 0xFDFD,
  173.     0xFF00, 0xF5F7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  174.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF7F8, 0xF7F8, 0xF9FF, 0xFDFD,
  175.     0xFFF9, 0xF9F9, 0xF9FA, 0xF9F9, 0xF9F9, 0xF9F9, 0xF9F9, 0xF9F9,
  176.     0xF9F9, 0xF9F9, 0xF9F9, 0xF92B, 0xF9F9, 0xF9F9, 0xF9FF, 0xFDFD,
  177.     0x00FF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  178.     0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFD, 0xFD00
  179. };
  180.  
  181. // This is the small 1 bit Cartridge icon and mask
  182. UInt16 Media_ics1[] =
  183. {
  184.     0x7FFC, 0xA812, 0xA9D2, 0xA952, 0xA9D2, 0xA812, 0xA812, 0xA812,
  185.     0xAFF2, 0xA012, 0xA012, 0xA012, 0xA012, 0xA013, 0xA013, 0xFFFF,
  186.     0x7FFC, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE,
  187.     0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF
  188. };
  189.  
  190. // This is the small 4 bit Cartridge icon
  191. UInt16 Media_ics4[] = 
  192. {
  193.     0x0FFF, 0xFFFF, 0xFFFF, 0xFF00, 0xFCDC, 0xDCCC, 0xCCCD, 0xCCF0,
  194.     0xFCDC, 0xDCCE, 0xEECD, 0xCCF0, 0xFCDC, 0xDCCE, 0xDDCD, 0xCCF0,
  195.     0xFCDC, 0xDCCE, 0xDDCD, 0xCCF0, 0xFCDC, 0xDCCC, 0xCCCD, 0xCCF0,
  196.     0xFCDC, 0xDCCC, 0xCCCD, 0xCCF0, 0xFCDC, 0xDCCC, 0xCCCD, 0xCCF0,
  197.     0xFCDC, 0xDDDD, 0xDDDE, 0xCCF0, 0xFCDC, 0xCCCC, 0xCCCC, 0xCCF0,
  198.     0xFCDC, 0xCCCC, 0xCCCC, 0xCCF0, 0xFCDC, 0xCCCC, 0xCCCC, 0xCCF0,
  199.     0xFCDC, 0xCCCC, 0xCCCC, 0xCCF0, 0xFCDC, 0xCCCC, 0xCCCC, 0xCCFA,
  200.     0xFCDC, 0xCCCC, 0xCCCC, 0xCCFA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFA
  201. };
  202.  
  203. // This is the small 8 bit Cartridge icon
  204. UInt16 Media_ics8[] =
  205. {
  206.     0x00FF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000,
  207.     0xFFF6, 0xFAF8, 0xFDF6, 0xF6F6, 0xF6F6, 0xF6FD, 0xF6F8, 0xFF00,
  208.     0xFFF7, 0xFAF8, 0xF9F6, 0xF6FB, 0xFBFB, 0xF6FA, 0xF7F8, 0xFF00,
  209.     0xFFF7, 0xFAF8, 0xF9F6, 0xF6FB, 0xF9F9, 0xF6FA, 0xF7F8, 0xFF00,
  210.     0xFFF7, 0xFAF8, 0xF9F6, 0xF6FB, 0xF9F9, 0xF6FA, 0xF7F8, 0xFF00,
  211.     0xFFF7, 0xFAF8, 0xF9F6, 0xF6F6, 0xF6F6, 0xF6FA, 0xF7F8, 0xFF00,
  212.     0xFFF7, 0xFAF8, 0xF9F6, 0xF6F6, 0xF6F6, 0xF6FA, 0xF7F8, 0xFF00,
  213.     0xFFF7, 0xFAF7, 0xF9F7, 0xF6F6, 0xF6F6, 0xF6FA, 0xF7F8, 0xFF00,
  214.     0xFFF7, 0xFAF7, 0xF9FA, 0xFAFA, 0xFAFA, 0xFAFB, 0xF8F8, 0xFF00,
  215.     0xFFF7, 0xFAF7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF8F8, 0xFF00,
  216.     0xFFF7, 0xFAF7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF8F8, 0xFF00,
  217.     0xFFF7, 0xFAF7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF8F8, 0xFF00,
  218.     0xFFF7, 0xFAF7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF8F8, 0xFF00,
  219.     0xFFF7, 0xFAF7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF8F8, 0xFFFD,
  220.     0xFFF7, 0xFAF7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF8F8, 0xFFFD,
  221.     0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFD
  222. };
  223. // The IconServicesLib also supports 32 bit color icons with 8 bit masks,
  224. // but currently this driver does not include the icons for this style.
  225.  
  226. void BuildMediaIconFamily( void )
  227. {
  228.     UInt32                 sizeOfFamily;
  229.     UInt32                 elementOffset = 0;
  230.     OSErr                err;
  231.     IconFamilyElement     *CartridgeMedia_ICN1;
  232.     IconFamilyElement    *CartridgeMedia_icl4;
  233.     IconFamilyElement    *CartridgeMedia_icl8;
  234.     IconFamilyElement     *CartridgeMedia_ics1;
  235.     IconFamilyElement     *CartridgeMedia_ics4; 
  236.     IconFamilyElement     *CartridgeMedia_ics8;
  237.  
  238.     // Check to see if the IconServices Library was imported by checking
  239.     // if the address of the GetIconRef call is nil, if it is don't do any
  240.     // of the IconServices calls
  241.     if(GetIconRef==nil)
  242.     {
  243.         FloppyMediaIconFamily = nil;
  244.         CartridgeMediaIconFamily = nil;
  245.         return;
  246.     }
  247.     
  248.     // Set up the Floppy Icon Family
  249.     err = GetIconRef(kOnSystemDisk, kSystemIconsCreator, kGenericFloppyIcon, &theFloppyIconRef);
  250.     if ( err == noErr )
  251.     {
  252.         err = IconRefToIconFamily (theFloppyIconRef, kSelectorAllAvailableData, &FloppyMediaIconFamily);
  253.     }
  254.     else
  255.     {
  256.         FloppyMediaIconFamily = nil;
  257.     }
  258.  
  259.     // Calculate the size of the Cartridge icon Family resource
  260.     sizeOfFamily = (sizeof(IconFamilyResource) - sizeof(IconFamilyElement)) + ((sizeof(OSType) + sizeof(Size)) * 6 ) + sizeof(CartridgeIcon) 
  261.                     + sizeof(Media_icl4) + sizeof(Media_icl8) + sizeof(Media_ics1) + sizeof(Media_ics4) + sizeof(Media_ics8);
  262.  
  263.     CartridgeMediaIconFamily = (IconFamilyPtr) PoolAllocateResident(sizeOfFamily, true);
  264.     if(CartridgeMediaIconFamily == nil)
  265.     {
  266.         return;
  267.     }
  268.     
  269.     // Set up the Icon family structure
  270.     CartridgeMediaIconFamily->resourceType = kIconFamilyType;
  271.     CartridgeMediaIconFamily->resourceSize = sizeOfFamily;
  272.  
  273.     // Set up the one bit small icon and mask
  274.     elementOffset = 0; 
  275.     CartridgeMedia_ics1 = (IconFamilyElement *) &CartridgeMediaIconFamily->elements;
  276.     CartridgeMedia_ics1->elementType = kSmall1BitMask;
  277.     CartridgeMedia_ics1->elementSize = (sizeof(OSType) + sizeof(Size)) + sizeof(Media_ics1);
  278.     BlockMove(&Media_ics1, &CartridgeMedia_ics1->elementData[0], sizeof(Media_ics1));
  279.  
  280.     // Set up the four bit color small icon
  281.     elementOffset += CartridgeMedia_ics1->elementSize; 
  282.     CartridgeMedia_ics4 = (IconFamilyElement *)(((UInt32) &CartridgeMediaIconFamily->elements) + elementOffset);
  283.     CartridgeMedia_ics4->elementType = kSmall4BitData;
  284.     CartridgeMedia_ics4->elementSize = (sizeof(OSType) + sizeof(Size)) + sizeof(Media_ics4);
  285.     BlockMove(&Media_ics4, &CartridgeMedia_ics4->elementData[0], sizeof(Media_ics4));
  286.  
  287.     // Set up the 8 bit color small icon
  288.     elementOffset += CartridgeMedia_ics4->elementSize; 
  289.     CartridgeMedia_ics8 = (IconFamilyElement *)(((UInt32) &CartridgeMediaIconFamily->elements) + elementOffset);
  290.     CartridgeMedia_ics8->elementType = kSmall8BitData;
  291.     CartridgeMedia_ics8->elementSize = (sizeof(OSType) + sizeof(Size)) + sizeof(Media_ics8);
  292.     BlockMove(&Media_ics8, &CartridgeMedia_ics8->elementData[0], sizeof(Media_ics8));
  293.     
  294.     // Set up the one bit Large icon and mask
  295.     elementOffset += CartridgeMedia_ics8->elementSize; 
  296.     CartridgeMedia_ICN1 = (IconFamilyElement *)(((UInt32) &CartridgeMediaIconFamily->elements) + elementOffset);
  297.     CartridgeMedia_ICN1->elementType = kLarge1BitMask;
  298.     CartridgeMedia_ICN1->elementSize = (sizeof(OSType) + sizeof(Size)) + sizeof(CartridgeIcon);
  299.     BlockMove(&CartridgeIcon, &CartridgeMedia_ICN1->elementData[0], sizeof(CartridgeIcon));
  300.  
  301.     // Set up the four bit color Large icon
  302.     elementOffset += CartridgeMedia_ICN1->elementSize; 
  303.     CartridgeMedia_icl4 = (IconFamilyElement *)(((UInt32) &CartridgeMediaIconFamily->elements) + elementOffset);
  304.     CartridgeMedia_icl4->elementType = kLarge4BitData;
  305.     CartridgeMedia_icl4->elementSize = (sizeof(OSType) + sizeof(Size)) + sizeof(Media_icl4);
  306.     BlockMove(&Media_icl4, &CartridgeMedia_icl4->elementData[0], sizeof(Media_icl4));
  307.  
  308.     // Set up the 8 bit color Large icon
  309.     elementOffset += CartridgeMedia_icl4->elementSize; 
  310.     CartridgeMedia_icl8 = (IconFamilyElement *)(((UInt32) &CartridgeMediaIconFamily->elements) + elementOffset);
  311.     CartridgeMedia_icl8->elementType = kLarge8BitData;
  312.     CartridgeMedia_icl8->elementSize = (sizeof(OSType) + sizeof(Size)) + sizeof(Media_icl8);
  313.     BlockMove(&Media_icl8, &CartridgeMedia_icl8->elementData[0], sizeof(Media_icl8));
  314. }
  315.  
  316. // Release the icons and any memory that is used by them
  317. void DestroyMediaIconFamily( void )
  318. {
  319.     if ( CartridgeMediaIconFamily != nil)
  320.     {
  321.         PoolDeallocate(CartridgeMediaIconFamily);
  322.     }
  323.     
  324.     CartridgeMediaIconFamily = nil;
  325.     
  326.     if ( FloppyMediaIconFamily != nil )
  327.     {
  328.         ReleaseIconRef(theFloppyIconRef);
  329.     }
  330.  
  331.     FloppyMediaIconFamily = nil;
  332. }
  333.  
  334. #pragma mark --
  335. #pragma mark 1 Bit Icon Accessors
  336. // Accessors for the Black and White DiskIcon pointers
  337. DiskIcon *GetOneBitIconPtr( OSType theDevice )
  338. {
  339.     DiskIcon *theMediaIcon = (DiskIcon *) &CartridgeIcon;
  340.  
  341.     if ( theDevice == kdgFloppyType )
  342.     {
  343.         theMediaIcon = (DiskIcon *) &AppleFloppyMediaIcon;
  344.     }
  345.     
  346.     return theMediaIcon;
  347. }
  348.  
  349. #pragma mark --
  350. #pragma mark Icon Family Accessors
  351. // Accessor functions for the different Icon Families
  352. IconFamilyPtr    GetFloppyIconFamilyPtr( void )
  353. {
  354.     return (IconFamilyPtr) &FloppyMediaIconFamily;
  355. }
  356.  
  357. IconFamilyPtr    GetMediaIconFamilyPtr( void )
  358. {
  359.     IconFamilyPtr theRemovableIconPtr = (IconFamilyPtr) &CartridgeMediaIconFamily;
  360.     
  361.     return theRemovableIconPtr;
  362. }
  363.